package com.quick.springbootquicky.annotation;

import com.quick.springbootquicky.validation.SateValidation;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;

/**
 * 自定义校验注解，message，groups，payload 这三个方法必须要有
 * 1、自定义注解State
 * 2、自定义校验数据类SateValidation 实现ConstraintValidator接口
 * 3、在需要校验地方使用自定义注解
 */
@Documented//元注解
@Target({ElementType.FIELD})//元注解，在哪里使用，方法还是类
@Constraint(validatedBy = SateValidation.class)//指定提供校验规则的类，是自定义规则的类
@Retention(RetentionPolicy.RUNTIME)//元注解，使用到什么时候
public @interface State {

    //提供校验失败后的提示值
    String message() default "state的值只能是:'已发布'或者'草稿'";
    //指定分组
    Class<?>[] groups() default {};
   //负载，获取到State注解的附加信息
    Class<? extends Payload>[] payload() default {};
}
